#pragma once

#include <iostream>

class Shape
{
public:
    virtual ~Shape() = default;

public:
    virtual void draw() = 0;
};

class Rectangle : public Shape
{
public:
    void draw() override
    {
        std::cout << "draw a rectangle." << std::endl;
    }
};

class Square : public Shape
{
public:
    void draw() override
    {
        std::cout << "draw a square." << std::endl;
    }
};

class Circle : public Shape
{
public:
    void draw() override
    {
        std::cout << "draw a circle." << std::endl;
    }
};